package com.atguigu.tingshu.user.service;

import com.atguigu.tingshu.model.user.UserInfo;
import com.atguigu.tingshu.vo.user.UserInfoVo;
import com.atguigu.tingshu.vo.user.UserPaidRecordVo;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * @author Petrichor
 */
public interface UserInfoService extends IService<UserInfo> {
    /**
     * 小程序授权登录
     * @author Petrichor
     * @date 2023/12/23 20:13
     * @param code 前端传来的 临时登录凭证
     * @return 自定义登陆状态
     **/
    Map<String, String> wxLogin(String code);
    /**
     * 获取登录信息
     * @author Petrichor
     * @date 2023/12/23 20:56
     * @return 用户登录信息
     **/
    UserInfoVo getUserInfoVoByUserId(Long userId);
    /**
     * 判断用户是否购买声音列表
     * @author Petrichor
     * @date 2024/1/1 15:28
     * @param albumId 专辑id
     * @param userId 用户id
     * @param trackIdList 声音id列表
     **/
    Map<Long, Integer> userIsPaidTrack(Long userId, Long albumId, List<Long> trackIdList);
    /**
     * 判断用户是否购买过专辑
     * @author Petrichor
     * @date 2024/1/6 16:25
     * @param albumId 专辑id
     * @return 是否购买过专辑
     **/
    Boolean isPaidAlbum(Long albumId);
    /**
     * 根据专辑id获取用户支付过的声音id列表
     * @author Petrichor
     * @date 2024/1/7 21:31
     * @param albumId 专辑id
     * @return 查看当前用户的 当前专辑购买的 声音集数 集合
     **/
    List<Long> findUserPaidTrackList(Long albumId);
    /**
     * 更新用户支付记录
     * @author Petrichor
     * @date 2024/1/8 22:49
     * @param userPaidRecordVo 用户支付记录对象
     * @return NULL
    **/
    void updateUserPaidRecord(UserPaidRecordVo userPaidRecordVo);
    /**
     * 更新Vip到期失效状态
     * @author Petrichor
     * @date 2024/1/12 19:13
     * @return NULL
     **/
    void updateVipExpireStatus();
}
